Booting an operating system (OS) on a computer sometimes involves first booting a small OS (pre-OS) that uses a minimal amount of memory. A pre-OS typically boots quickly and without complication, and can perform various configuration tasks prior to booting the main OS. Examples of tasks often performed by a pre-OS are scanning for malicious code (particularly scanning of the boot sector) and performing system updates. After the pre-OS performs these critical start-up operations quickly and efficiently, the main OS is booted. A pre-OS can also be booted into from a main OS to perform various, non-startup lower level operations. For example, it can be desirable to boot into a pre-OS from a main OS to handle certain types of disk imaging tasks.
DOS was originally the most common pre-OS. Versions of Microsoft Windows® through Windows 95 used DOS as a pre-OS. As DOS is a 16-bit OS, it is not as functional as a pre-OS for 32 and 64 bit environments as would be desirable. Microsoft later released Windows Preinstallation Environment (WinPE), a lightweight version of Windows XP (or of other, similar versions of Windows). WinPE was intended as a 32-bit (or 64-bit) replacement for DOS during the installation phase of Windows, and can be booted via PXE, CD-ROM, USB flash drive or hard disk.
Originally, WinPE was used mostly by equipment manufacturers to preinstall Windows client operating systems on user computers. WinPE is now widely available, and is used for operations such as deployment of workstations and servers in large corporations, as a platform on which to run 32-bit or 64-bit recovery tools, and as a platform for running 32-bit or 64-bit disk management activities. Other 32-bit and 64-bit pre-OSs exist as well, such as various pre-OS versions of Linux, UNIX, Solaris, etc.
The above-mentioned types of disk management activities are often controlled from a remote management server. In order to perform certain disk operations such as restoring a full system image (in the context of, e.g., a backup, clone or provisioning operation), it is necessary to have unimpeded access to the underlying system hardware. This access is typically obtained by booting into a pre-OS such as WinPE or Linux. These pre-OS environments require device drivers to access the underlying hardware, such as the disk drives and the network.
When the system is being instructed to boot into a pre-OS remotely by a management server, it is important that the critical drivers be present in the pre-OS. This ensures both that communication can be maintained with the management server, and that the intended task (e.g. restoring an image) can be performed. In some pre-OS environments (e.g., uncompressed WinPE), the pre-OS cannot boot successfully without the correct drivers for the storage devices that are present on the computer. As a result, the system is in an un-bootable state unless the storages drivers are present in the pre-OS. Under other systems, a missing storage driver may not cause the boot into the pre-OS to fail, but can still cause an unintended reordering of the disk numbers, such that an image restore operation can inadvertently destroy the contents of one or more disks.
It would be desirable to address these issues.